package com.ljyh.forum.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ljyh.forum.dto.PostDTO;
import com.ljyh.forum.entity.Post;
import java.util.List;

/**
 * 帖子服务接口
 */
public interface PostService extends IService<Post> {
    
    /**
     * 分页获取帖子列表
     * @param page 页码
     * @param size 每页大小
     * @param categoryId 分类ID（可选）
     * @param sort 排序方式（new:最新, hot:热门）
     * @return 帖子分页列表
     */
    Page<PostDTO> getPostsPage(int page, int size, Integer categoryId, String sort);
    
    /**
     * 发布帖子
     * @param title 标题
     * @param content 内容
     * @param categoryId 分类ID
     * @param userId 用户ID
     * @return 操作结果
     */
    boolean publishPost(String title, String content, Integer categoryId, Long userId);
    
    /**
     * 获取帖子详情
     * @param id 帖子ID
     * @return 帖子详情
     */
    PostDTO getPostDetail(Long id);
    
    /**
     * 增加帖子浏览量
     * @param id 帖子ID
     * @return 操作结果
     */
    boolean increaseViewCount(Long id);
    
    /**
     * 删除帖子
     * @param id 帖子ID
     * @return 操作结果
     */
    boolean deletePost(Long id);
    
    /**
     * 获取热门帖子列表
     * @param limit 限制数量
     * @return 热门帖子列表
     */
    List<PostDTO> getHotPosts(int limit);
    
    /**
     * 获取指定用户的帖子列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 用户的帖子分页列表
     */
    Page<PostDTO> getUserPosts(Long userId, int page, int size);

    /**
     * 设置帖子是否为精华帖子
     * @param postId 帖子ID
     * @param isFeatured 是否精华 (0: 否, 1: 是)
     * @return 操作结果
     */
    boolean setPostFeatured(Long postId, Integer isFeatured);

    /**
     * 获取精华帖子列表
     * @param page 页码
     * @param size 每页大小
     * @return 精华帖子分页列表
     */
    Page<PostDTO> getFeaturedPosts(int page, int size);
}
